using System;
using System.Collections.Generic;
using System.Text;
using SystemFrameworks;
using Common;

namespace BusinessRules
{
    class Correos
    {
        
        private static string strRemitente = string.Empty;
        private static string strCorreoRemitente = string.Empty;
        private static string strDestinatario = string.Empty;
        private static string strCorreoDestinatario = string.Empty;
        private static string strAccionCorreo = string.Empty;
        private static int intUsuarioId = 0;
        private static int intModuloHistoricoEmail = 0;
        private static int intServicioHistoricoEmail = 0;
        
        private string _CadenaConexion;
        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }

        

        #region propiedades

        public static int ModuloHistoricoEmail
        {
            get { return intModuloHistoricoEmail; }
            set { intModuloHistoricoEmail = value; }
        }

        public static int ServicioHistoricoEmail
        {
            get { return intServicioHistoricoEmail; }
            set { intServicioHistoricoEmail = value; }
        }

        public static string Remitente
        {
            get { return strRemitente; }
            set { strRemitente = value; }
        }

        public static string CorreoRemitente
        {
            get { return strCorreoRemitente; }
            set { strCorreoRemitente = value; }
        }

        public static string Destinatario
        {
            get { return strDestinatario; }
            set { strDestinatario = value; }
        }

        public static string CorreoDestinatario
        {
            get { return strCorreoDestinatario; }
            set { strCorreoDestinatario = value; }
        }

        public static string AccionCorreo
        {
            get { return strAccionCorreo; }
            set { strAccionCorreo = value; }
        }

        public static int UsuarioId
        {
            get { return intUsuarioId; }
            set { intUsuarioId = value; }
        }

     

        #endregion
        public Correos(string strCadenaConecxion)
        {
            CadenaConexion = strCadenaConecxion;

        }

        /// <summary>
        /// Envio de Correos. Graba un registro en el historico de Correos enviados
        /// Antes de Usar el Metodo de Deben asignar valores para las siguientes propiedades de la clase "Correos"
        /// 1. intModuloHistoricoEmail
        /// 2. intServicioHistoricoEmail
        /// 3. Remitente
        /// 4. CorreoRemitente
        /// 5. Destinatario
        /// 6. CorreoDestinatario
        /// 7. AccionCorreo
        /// 8. UsuarioId
        /// </summary>
        /// <param name="strSeccionId">ID de la Seccion</param>
        /// <param name="strServicioId">ID del Servicio</param>
        /// <param name="strMensajeId">ID de la Plantilla a usar en el Mensaje</param>
        /// <param name="strSubjectId">ID del Subject Generico para usar en el Mensaje</param>
        /// <param name="strCorreo">Correo del Destinatario</param>
        /// <param name="ArrModificadores">Lista Modificadores del Mensaje</param>
        /// <param name="ArrValores">Valores para los Modificadores</param>
        public void EnviarCorreoPlantilla(string strSeccionId, string strServicioId, string strMensajeId, string strSubjectId, string strCorreo, string[] ArrModificadores, string[] ArrValores, string StrServidor, string StrMailAutentication, string StrMailpassword)
        {
            StringBuilder strBody = new StringBuilder();
            StringBuilder strSubject = new StringBuilder();
            Sistema objSistema = new Sistema(CadenaConexion);
            strBody.Append(objSistema.TraerValor(strMensajeId, ArrModificadores, ArrValores));
            strSubject.Append(objSistema.TraerValor(strSubjectId, ArrModificadores, ArrValores));
            Utilidad.EnviarCorreo(strCorreo, "", strSubject.ToString(), strBody.ToString(), Utilidad.RemitenteCorreo.SINIC,  StrServidor,  StrMailAutentication,  StrMailpassword);
        }


        public void EnviarCorreoFase(string strMensajeId, string strSubjectId, string strCorreo, string[] ArrModificadores, string[] ArrValores, string StrServidor, string StrMailAutentication, string StrMailpassword)
        {
            StringBuilder strBody = new StringBuilder();
            StringBuilder strSubject = new StringBuilder();
            Sistema objSistema = new Sistema(CadenaConexion);
            strBody.Append(objSistema.TraerValor(strMensajeId, ArrModificadores, ArrValores));
            strSubject.Append(objSistema.TraerValor(strSubjectId, ArrModificadores, ArrValores));
            Utilidad.EnviarCorreo(strCorreo, "", strSubject.ToString(), strBody.ToString(), Utilidad.RemitenteCorreo.SINIC,  StrServidor,  StrMailAutentication,  StrMailpassword);
        }
    }
}
